package com.example.aop.demo.aops;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @author wuyunbin
 */
@Aspect
@Component
@Slf4j
public class DemoAop {

    @Pointcut("execution(* com.example.aop.demo.controller.*.*(..))")
    public void pt(){}

    @Around("pt()")
    public Object handler(ProceedingJoinPoint pjp) throws Throwable {
        //--执行方法前需要做的处理--//
        log.info("前。。。");
        //调用切到的方法
        Object proceed = pjp.proceed();
        //--执行方法后需要做的处理--//
        log.info("后。。。");
        return proceed;
    }
}
